package br.com.cicero.notasfiscais.interceptor;

import java.text.SimpleDateFormat;

import javax.inject.Inject;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;

import org.apache.log4j.Logger;

import br.com.cicero.notasfiscais.annotation.Auditavel;
import br.com.cicero.notasfiscais.mb.UsuarioLogado;

@Interceptor
@Auditavel
public class AuditoriaInterceptor {
	
	private @Inject UsuarioLogado usuarioLogado;
	private static final Logger logger =
			Logger.getLogger(AuditoriaInterceptor.class);
	
	@AroundInvoke
	public Object aroundInvoke(InvocationContext ic) throws Exception {
		Object result = ic.proceed();
		logger.info("O medoto: " + ic.getMethod().getName()
				+ " foi executado pelo usuario: "
				+ usuarioLogado.getUsuario().getLogin()
				+ " na data: " + new SimpleDateFormat("dd/MM/yyyy 'às' hh:mm:ss"));
		return result;
	}

}
